package com.jiao.databinding3.baseobservable;


import androidx.databinding.BaseObservable;
import androidx.databinding.Bindable;

import com.jiao.databinding3.BR;
/*
* 在 setName() 方法中更新的只是本字段，而 setDetails() 方法中更新的是所有字段
添加两个按钮用于改变 goods 变量的三个属性值，由此可以看出两个 notify 方法的区别
* */
public class Goods extends BaseObservable {

    //如果是 public 修饰符，则可以直接在成员变量上方加上 @Bindable 注解
    @Bindable
    public String name; //这种形式双向绑定没反应

    //如果是 private 修饰符，则在成员变量的 get 方法上添加 @Bindable 注解
    private String details;

    private float price;

    public Goods(String name, String details, float price) {
        this.name = name;
        this.details = details;
        this.price = price;
    }

    public void setName(String name) {
        this.name = name;
        //只更新本字段
        notifyPropertyChanged(BR.name);
    }

    @Bindable
    public String getDetails() {
        return details;
    }

    public void setDetails(String details) {
        this.details = details;
        //更新所有字段
//        notifyChange();
        notifyPropertyChanged(BR.details);
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }

}